package com.slb.slnwp.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.*;

/**
 * @author: joinly
 * @date: 2022/04/27 16:54
 * @desc:　线程池
 **/

@Configuration
public class ThreadPoolExecutorConfig {

    /**
     * 创建并返回一个ExecutorService，用于管理线程池,参数如下：
     * // 核心线程数，最小同时运行的线程数
     * // 最大线程数，线程池允许创建的最大线程数
     * // 线程空闲时间，当线程数量超过核心线程数时，多余的空闲线程在指定时间内会被终止
     * // 空闲时间单位，这里是秒
     * @return
     */
    @Bean(value = "threadPoolExecutor")
    public Executor executor() {
         // 对应上述的参数
         ExecutorService executor = new ThreadPoolExecutor(5, 10, 1L, TimeUnit.SECONDS,
                new LinkedBlockingQueue<Runnable>(5), new ThreadPoolExecutor.AbortPolicy());
        return executor;
    }
}
